/**
 * 以下是对 ui-app-api 的二次封装
 */



/**
 * 路由跳转（可自行拓展）
 * @param {type} 
   * to 正常推一个页面栈
   * dir 删除本页面栈，推一个新的新页面
   * back 返回上一个页面
 */
export const aNav = (params = '/pages/index/index') => {
	if(typeof params === 'string') {
		uni.navigateTo({
			url: params
		})
	}else {
		const { type = 'to' } = params
		if (type === 'to') {
			uni.navigateTo({
				...params
			})
		}else if (type === 'dir') {
			uni.redirectTo({
				...params
			})
		}else if (type === 'back') {
			uni.navigateBack({
				...params
			})
		}
	}
	
}


/*
  提示信息
  @params 
   1. title    提示标题 String
   2. duration 持续时间 Number 
   2. icon     提示图标 String
  @return promise
*/
export const aToast = (title='提示信息', duration=1200, icon='none') => {
	 return new Promise((resolve, reject) => {
		 uni.showToast({
		 	title,
		 	duration,
		 	icon,
		 	mask: true,
		 	success(res) {
		 		resolve(res)
		 	},
		 	fail(err) {
		 		reject(err)
		 	}
		 })
	 })
}

/*
  获取code
  @return promise
*/
export const aLogin = () => {
	return new Promise((resolve, reject) => {
		uni.login({
			timeout: 10000,
			success(res) {
			   resolve(res)	
			},
			fail(err) {
			   reject(err)		  
			}
		})
	})
}

/* 
  获取服务提供商
  @params 
   1. service 服务提供商名称 String
  @return promise
*/
export const aProvider = (service) => {
	return new Promise((resolve, reject) => {
		uni.getProvider({
			service,
			success(res) {
				resolve(res)
			},
			fail(err) {
				reject(err)
			}
		})
	})
}

/* 
  支付
  @params
   1. params Object
  @return promise
*/
export const aPay = (params) => {
	return new Promise((resolve, reject) => {
		uni.requestPayment({
			...params,
			success(res) {
				resolve(res)
			},
			fail(err) {
				reject(err)
			}
		})
	})
}

/* 
  对话确认框
  @params 
   1. title   弹框标题 String
   2. content 弹框内容 String
   2. params  其它参数 Object
  @return promise
*/
export const aModal = (title, content, params={}) => {
	return new Promise((resolve, reject) => {
		uni.showModal({
			title,
			content,
			...params,
			success(res) {
				if (res.confirm) {
					resolve(true)
				} else if (res.cancel) {
					resolve(false)
				}
			},
			fail(err) {
				reject(false)
			}
		})
	})
}

/* 
  获取定位
  @params
   1. params Object
  @return promise
*/
export const aGetLocation = (params) => {
	return new Promise((resolve, reject) => {
		uni.getLocation({
			...params,
			success(res) {
				resolve(res)
			},
			fail(err) {
				reject(err)
			}
		})
	})
}

/* 
  扫码查询
  @params 
   1. onlyFromCamera 是否仅使用照相机 Object
   2. params 其它参数 Object
  @return promise
*/
export const aScanCode = (onlyFromCamera = false, params) => {
	return new Promise((resolve, reject) => {
		uni.scanCode({
			onlyFromCamera: onlyFromCamera,
			scanType: ['qrCode'],
			...params,
			success(res) {
				resolve(res)
			},
			fail(err) {
				reject(err)
			}
		})
	})
}

/* 
  图片放大预览
  @params 
   1. current 当前图片的索引值 String
   2. urls    图片组 Array
   3. params  其它参数 Object
  @return promise
*/
export const aPreviewImage = (current, urls = [], params = {}) => {
	return new Promise((resolve, reject) => {
		uni.previewImage({
			current,
			urls,
			...params,
			success(res) {
				resolve(res)
			},
			fail(err) {
				reject(err)
			}
		})
	})
}